package com.weixin.project.Util;

import com.weixin.project.Entity.Question;

import java.util.*;
import java.util.stream.Collectors;

public class CollectionUtil {
    /**
     * 并集 A+B
     * @param A 集合
     * @param B 集合
     * @return 并集
     */
    public static Set<Integer> union(Set<Integer> A, Set<Integer> B){
        if (A == null && B != null) return B;
        if (A != null && B == null) return A;
        if (A == null && B == null) return new HashSet();
        Set<Integer> unionSet = new HashSet<Integer>(A);
        unionSet.addAll(B);
        return unionSet;
    }

    /**
     * 差集，A-B
     * @param A 集合
     * @param B 集合
     * @return 差集
     */
    public static Set<Integer> diff(Set<Integer> A, Set<Integer> B) {
        if (A == null) return new HashSet<Integer>();
        if (B == null) return A;

        Set<Integer> diffSet = new HashSet<Integer>(A);
        diffSet.removeAll(B); // 从diffSet中移除B的元素

        return diffSet;
    }

    /**
     * 获取一个集合的随机子集
     * @param A 集合
     * @param size 子集size
     * @return 随机子集
     */
    public static Set randomSubSet(Set A, Integer size){
        List list = new ArrayList(A);
        Collections.shuffle(list);
        return new HashSet(list.subList(0, size));
    }

//    /**
//     * list[list[double]]转化为二维数组
//     * @param list list[list[double]]
//     * @return double[][]
//     */
//    public static double[][] list2arrayIn2dim(List<List<Double>> list){
//        double[][] res = new double[list.size()][];
//        for (int i = 0; i < list.size(); i++) {
//            System.out.println(list.get(i));
//            res[i] = list2arrayIn1dim(list.get(i));
//        }
//        return res;
//    }
//
//    /**
//     * list[double]转化为一维数组
//     * @param list 浮点list
//     * @return 浮点数组
//     */
//    public static double[] list2arrayIn1dim(List<Double> list){
//        return list.stream().mapToDouble(Double::doubleValue).toArray();
//    }
}
